package com.atguigu.gmall.service.exception;

import com.atguigu.gmall.common.execption.GmallException;
import com.atguigu.gmall.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 当前应用的全局处理器
 * @ControllerAdvice:这个组件是所有@controller 组件的切面
 * @ResponseBody: 返回的对象以json方式写出
 */
@Slf4j
@RestControllerAdvice //全局异常处理切面
public class AppGlobalException {

    /**
     * 业务异常处理器
     */
    @ExceptionHandler(GmallException.class)
    public Result handleGmallException(GmallException e){
        log.error("全局异常捕获:业务异常:{}",e);
        Result fail = Result.fail();
        fail.setCode(e.getCode());
        fail.setMessage(e.getMessage());

        return fail;
    }
    @ExceptionHandler(Exception.class)
    public Result handleSystemException(Exception e){
        log.error("全局异常捕获:系统异常:{}",e);
        Result fail = Result.fail();
        fail.setCode(500);
        fail.setMessage("服务器内部异常");

        return fail;
    }


}
